package com.lazily.map_;


import java.util.HashMap;
import java.util.Map;

/**
 * @Author:  GZQ
 * @date:  2025/6/1 15:29
 * @description: Map 接口实现类的特点
 * @version: 1.0
 */

@SuppressWarnings({"all"})
public class Map_ {
	// 程序入口
	public static void main(String[] args) {
		// 解读Map 接口实现类的特点
		// 1. Map 与 Collection 并列存在。 用于保存具有影射关系的数据: Key-Value(双列元素)
		// 2. Map 中的 key 和 value 可以是任何引用类型的数据, 会封装到HashMap$Node 对象中
		// 3. Map 中的 key 不允许重复, 原因和HashSet 一样, 前面分心过源码。
		// 4. Mao 中的 value 可以重复
		// 5. Map 的key 可以为 null, value 也可以为null, 注意 key 为null,
		// 只能有一个, value 为 null, 可以有多个
		// 6. 常用String类作为Map的 key
		// 7. key 和 value 之间存在单向一对一关系，即通过指定的 key 总能找到对应的value
		Map map = new HashMap();
		map.put("no1", "懒洋洋"); // k-v
		map.put("no2", "灰太狼"); // k-v
		map.put("no1", "喜洋洋"); // 当有相同的k, 就等价与替换
		map.put("no3", "喜洋洋"); // k-v
		map.put(null, null); // k-v
		map.put(null, "abc"); // 等价替换
		map.put("no3", null); // k-v
		map.put("no4", null); // k-v
		map.put(1, "赵敏");//k-v
		map.put(new Object(), "金毛狮王");//k-v

		// 通过 get 方法，传入 key ,会返回对应的 value
		System.out.println(map.get("no2"));
		System.out.println("map = " + map);
	}
}
